perm filename MOSZ.LSP[W79,JMC] blob sn#411011 filedate 1979-01-15 generic text, type T, neo UTF8
;;; from phone conversations with Corky, 1-14-79
;;;f(x,y) ← if x = 0 then 0 else f(x-1,f(x+1,y))
;;;cn(x,xc,y,yc) ← 1 + (if x=0 then xz else cn(x-1,xc,f(x+1,y),cn(x+1,xc,y,yc)))



(SETQ BASE (SETQ IBASE 10.)) 

(DEFUN CF (X CX) 
       (PLUS 1.
	     (COND ((> X 100.) CX)
		   (T (CF (F (PLUS X 11.)) (CF (PLUS X 11.) CX)))))) 

(DEFUN F (X) (COND ((> X 100.) (- X 10.)) (T (F (F (+ X 11.)))))) 

(DEFUN CBNTAK (X Y Z) (CBNTAK1 X 0. Y 0. Z 0.)) 

(DEFUN CBNTAK1 (X M Y N Z P) 
       (ADD1 (COND ((≤ X Y) (+ M N))
		   (T (CBNTAK1 (TAK (SUB1 X) Y Z)
			       (CBNTAK1 (SUB1 X) M Y N Z P)
			       (TAK (SUB1 Y) Z X)
			       (CBNTAK1 (SUB1 Y) N Z P X M)
			       (TAK (SUB1 Z) X Y)
			       (CBNTAK1 (SUB1 Z) P X M Y N)))))) 

(DEFUN CBVTAK (X Y Z) 
       (PLUS 1.
	     (COND ((≤ X Y) 0.)
		   (T (PLUS (CBVTAK (TAK (SUB1 X) Y Z)
				    (TAK (SUB1 Y) Z X)
				    (TAK (SUB1 Z) X Y))
			    (CBVTAK (SUB1 X) Y Z)
			    (CBVTAK (SUB1 Y) Z X)
			    (CBVTAK (SUB1 Z) X Y)))))) 

(DEFUN TAK (X Y Z) (COND ((≤ X Y) Y) ((NOT (LESSP Z Y)) Z) (T X))) 

;;;ctak(x,y,z) ← if x ≤ y then 1 else ctak(tak(x-1,y,z),tak(y-1,z,x),t
;;;ak(z-1,x,y))
;;;+ (if use1(tak(x-1,y,z),tak(y-1,z,x),tak(z-1,x,y)) then ctak(x-1,y,
;;;z) else 0)
;;;+ (if use2(tak(x-1,y,z),tak(y-1,z,x),tak(z-1,x,y)) then ctak(y-1,z,
;;;x) else 0)
;;;+ (if use3(tak(x-1,y,z),tak(y-1,z,x),tak(z-1,x,y)) then ctak(z-1,x,
;;;y) else 0)

(DEFUN CTAK2 (X Y Z) 
       (COND ((≤ X Y) 1.)
	     (T (PLUS 1.
		      (CTAK2 (TAK (SUB1 X) Y Z)
			     (TAK (SUB1 Y) Z X)
			     (TAK (SUB1 Z) X Y))
		      (CTAK2 (SUB1 X) Y Z)
		      (CTAK2 (SUB1 Y) Z X)
		      (COND ((USE3 (TAK (SUB1 X) Y Z)
				   (TAK (SUB1 Y) Z X)
				   (TAK (SUB1 Z) X Y))
			     (CTAK2 (SUB1 Z) X Y))
			    (T 0.)))))) 

(DEFUN USE3 (X Y Z) (< Y X))